package com.cudex.negocio.utils;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.cudex.negocio.Manager.IManagerCliente;
import com.cudex.negocio.Manager.IManagerEmpleado;
import com.cudex.negocio.Manager.IManagerFacturas;
import com.cudex.negocio.beans.Clientes;
import com.cudex.negocio.beans.Empleado;
import com.cudex.negocio.beans.FacturaPK;
import com.cudex.negocio.beans.Facturas;
import com.cudex.negocio.enums.TipoFactura;

/**
 * @author Nicolas Bordenave
 * @date 28/11/2011
 * @version 1.0
 */
public class TestEjbRemote {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testRemote();
	}

	private static void testRemote() {
		Properties props = new Properties();

		props.put("java.naming.factory.initial",
				"org.jnp.interfaces.NamingContextFactory");
		props.put("java.naming.factory.url.pkgs",
				"org.jboss.naming:org.jnp.interfaces");
		props.put("java.naming.provider.url", "localhost:1099");
		// props.put("java.naming.provider.url",
		// "erp-test.sede.saceem.com.uy:1099");

		try {
			Context ctx = new InitialContext(props);

			// Clientes
			// altaClientes(ctx);
			// Empleados
			// altaEmpleados(ctx);

			// Facturas
			altaFacturas(ctx);

		} catch (NamingException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static void altaClientes(Context ctx) throws NamingException {

		IManagerCliente manager = null;
		manager = (IManagerCliente) ctx.lookup("ManagerClienteBean/remote");

		Clientes c = new Clientes();

		c.setRut(2100141318);
		// c.setNombre("Cliente 01");
		// c.setrSocial("Prueba borrar");
		// c.setFechaAlta(new Date(System.currentTimeMillis()));
		// c.setDireccion("Direccion");

		try {
			// System.out.println("Alta Cliente: " + manager.altaCliente(c));

			// c.setNombre("Cliente 01 Modificado");
			// System.out.println("Mod Cliente: " + manager.modCliente(c));
			System.out.println("Encontrado : " + manager.buscarCliente(c));
			// System.out.println("Encontrado : " + manager.buscarTodos());
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	private static void altaEmpleados(Context ctx) throws NamingException {

		IManagerEmpleado manager = null;
		manager = (IManagerEmpleado) ctx.lookup("ManagerEmpleadoBean/remote");

		Empleado e = new Empleado();
		e.setApellido("Bordenave");
		e.setNombre("Eduardo");
		e.setCedula(123456);
		e.setEmail("eborde@gmail.com");
		e.setfNacimieto(new Date());
		e.setCelular("099606161");
		e.setDireccion("Direccion Viejo");
		e.setTel("27118073");
		e.setUser("eborde");
		e.setPass("123");

		try {
			System.out.println("Alta Empleado: " + manager.altaEmpleado(e));
			System.out.println("Login : "
					+ manager.login("eborde", "123").toString());
			e.setApellido(e.getApellido() + " Bentivoglio");
			System.out
					.println("Modificar empleado : " + manager.modEmpleado(e));
			System.out
					.println("buscar Empleado : " + manager.buscarEmpleado(e));

		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	private static void altaFacturas(Context ctx) throws NamingException {

		IManagerFacturas manager = null;
		manager = (IManagerFacturas) ctx.lookup("ManagerFacturasBean/remote");

		IManagerCliente mCliente = null;
		mCliente = (IManagerCliente) ctx.lookup("ManagerClienteBean/remote");

		Date e = new Date();
		Date v = new Date();

		v.setDate(25);
		v.setMonth(4);
		v.setYear(2012);

		Clientes c1 = new Clientes();
		try {
			c1.setRut(2100141318);
			c1 = mCliente.buscarCliente(c1);
		} catch (Exception e2) {
			e2.printStackTrace();
		}

		Facturas f = new Facturas();

		f.setCliente(c1);
		f.setfEmision(e);

		f.setfKey(new FacturaPK("C", 2222268));
		f.setfVencimiento(v);
		f.setMoneda(1);
		f.setNumero(2222268);
		f.setSerie("C");
		f.setSubTotal(4000);
		f.setIva(22);
		f.setTotal(4880);

		Facturas f1 = new Facturas();

		f1.setCliente(c1);
		f1.setfEmision(e);

		f1.setfKey(new FacturaPK("B", 1234852));
		f1.setfVencimiento(v);
		f1.setMoneda(1);
		f1.setNumero(1234852);
		f1.setSerie("B");
		f1.setSubTotal(5000);
		f1.setIva(22);
		f1.setTotal(6100);
		f1.setTipoFactura(TipoFactura.Credito);

		try {
			// System.out.println("Alta Factura: " + manager.crearFactura(f));
			// System.out.println("Alta Factura: " + manager.crearFactura(f1));
			//
			// f1.setTotal(12200);
			// System.out.println("Mod Factura: " +
			// manager.modificarFactura(f1));
			// System.out.println("Encontrado : " + manager.buscarFactura(f));
			// System.out.println("Encontrado : " + manager.buscarTodos());
			// System.out.println("Encontrado : "
			// + manager.buscarFacturaCliente(c1));

			listarFactsCliente(c1, manager);

		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	private static void listarFactsCliente(Clientes c, IManagerFacturas manager) {
		ArrayList<Facturas> facts;

		try {
			facts = manager.buscarFacturasCliente(c);
			System.out.println(" ## FACTURAS ENCONTRADAS de : " + facts.size());
			for (Iterator<Facturas> iterator = facts.iterator(); iterator
					.hasNext();) {
				Facturas facturas = (Facturas) iterator.next();
				System.out.println(facturas.toString());
			}
			System.out.println(" ## ## ## ## ## ##");

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}
